package Busquedas;


/**
 * Clase que representa el estado de un problema.
 * Dicho estado viene caracterizado por su numero de parametros y el contenido de estos.

 */
public class Estado {
	
	private int numParametros;
	
	private int[] parametros;
	
	

	public Estado(int[] parametros){
		this.numParametros = parametros.length;
		this.parametros = parametros;
	}
	
	

	public Estado(Estado otro){
		this.numParametros = otro.getNumParametros();
		for (int i = 0; i < numParametros; i++){
			parametros[i] = otro.getParametro(i);
		}
	}

	

	public int getNumParametros() {
		return numParametros;
	}

	

	public void setNumParametros(int numParametros) {
		this.numParametros = numParametros;
	}

	

	public void cambiaEstado(Estado otro) {
		for (int i = 0; i < numParametros; i++){
			parametros[i] = otro.getParametro(i);
		}
	}
	

	public int getParametro(int i){
		if (i >= 0 && i < numParametros)
			return parametros[i];
		return -1;
	}
	
	

	public void setParametro(int i,int valor){
		if (i >= 0 && i < numParametros){
			parametros[i] = valor;
		}
	}
	
	
	
	public boolean esIgual(Estado otro){
		boolean igual = true;
		int i = 0;
		while (igual && i < this.parametros.length){
			igual = otro.getParametro(i) == this.parametros[i];
			i++;
		}
		return igual;
	}
	
	

	public String toString()
	{
		String s="(";
		for (int i=0;i<numParametros;i++){
			if (i == numParametros-1)
				s += parametros[i];
			else
				s+=parametros[i]+",";
		}
		s += ")";
		return s;
	
	}

	

	public int[] getParametros() {
		return parametros;
	}


	public void setParametros(int[] parametros) {
		this.parametros = parametros;
	}
}
